﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dominio;
using Servicios;
using System.Text;

namespace EstadisticaProduce.Acuicultura
{
    public partial class frmMateria : ObjectPage //System.Web.UI.Page
    {

        #region Variables
            clsAcuicultura _consultas = new clsAcuicultura();
            string err_mens = string.Empty;
        #endregion

        #region Eventos
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    hdnperiodo.Value = UsuarioSistema.cod_Periodo;  
                    hdncodestablecimiento.Value = "1";
                    hdncodempresa.Value = UsuarioSistema.cod_Empresa; 
                    hdncodregistro.Value = "0";
                    hdnaccion.Value = string.Empty;

                    cargaEspecie(-1);
                    cargaPuertos();
                    cargaGrilla();
                }
            }

            protected void btnGrabar_Click(object sender, EventArgs e)
            {
                try
                {
                    GrabarMateriaPrima();
                }
                catch (Exception ex)
                {
                    err_mens = "Error al Grabar:" + ex.Message;
                    muestraPnlMensaje(err_mens, 1);
                }
            }

            protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                try
                {
                    if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                    {
                        GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                        int Index = row.RowIndex;

                        if (e.CommandName == "x_edit")
                        {
                            /*
                            cod_materiaprima,codperiodo,codempresa,nombrecomercial,desespeci,codespecie,canvolumen,numvolumen,valvolumen,codpuerto,despuerto,desobservacion"
                             */
                            domConsultasGenerales be = new domConsultasGenerales();
                            be.cod_materiaprima = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_materiaprima"]);
                            be.codperiodo = gvRegistro.DataKeys[Index].Values["codperiodo"].ToString();
                            be.codempresa = gvRegistro.DataKeys[Index].Values["codempresa"].ToString();
                            be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);
                            be.desespeci = gvRegistro.DataKeys[Index].Values["desespeci"].ToString();
                            be.valvolumen = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["valvolumen"]);
                            be.canvolumen = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["canvolumen"]);
                            be.codpuerto = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codpuerto"]);
                            be.desobservacion = gvRegistro.DataKeys[Index].Values["desobservacion"].ToString();

                            limpiaFormulario();
                            cargaFormulario(be);
                        }
                        else
                        {
                            domConsultasGenerales be = new domConsultasGenerales();
                            be.cod_materiaprima = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_materiaprima"]);

                            eliminaRegistro(be);
                        }
                    }
                }
                catch (Exception ex)
                {
                    err_mens = ex.StackTrace.ToString();
                }
            }

            protected void btnLimpia_Click(object sender, EventArgs e)
            {
                limpiaFormulario();
            }
        #endregion

        #region Médotos
            private void cargaEspecie(decimal _cod_tipo_especie)
            {
                decimal cod_especie = -1;
                decimal cod_tipo_especie = _cod_tipo_especie;
                string des_especie = string.Empty;
                string cod_empresa = hdncodempresa.Value;
                Hashtable ht = new Hashtable();
                ht.Add("cod_especie", cod_especie);
                ht.Add("cod_tipo_especie", cod_tipo_especie);
                ht.Add("des_especie", des_especie);
                ht.Add("cod_empresa", cod_empresa);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

                lst = _consultas.ListaEspecies(ht);
                ddlEspecie.DataSource = lst;
                ddlEspecie.DataTextField = "desespecie";
                ddlEspecie.DataValueField = "codespecie";
                ddlEspecie.DataBind();
                Utilidades.DropDownListAnnadir(ref ddlEspecie, "0", "- Seleccione", 0);
            }

            private void cargaPuertos()
            {
                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaPuertos();
                ddlPuerto.DataSource = lst;
                ddlPuerto.DataTextField = "despuerto";
                ddlPuerto.DataValueField = "codpuerto";
                ddlPuerto.DataBind();
                Utilidades.DropDownListAnnadir(ref ddlPuerto, "0", "- Seleccione", 0);

            }
            private void limpiaFormulario()
            {
                hdnaccion.Value = string.Empty;
                hdncodregistro.Value = "0";
                txtTM.Text = "0.00";
                txtValor.Text = "0.00";
                txtImportado.Text = string.Empty;
                txtObservacion.Text = string.Empty;
                txtImportado.Text = string.Empty;
                Utilidades.DropDownListSelectValue(ref ddlEspecie, "0");
                Utilidades.DropDownListSelectValue(ref ddlPuerto, "0");
                solonumeros();
            }

            private void cargaGrilla()
            {
                try
                {
                    decimal COD_MATERIAPRIMA = -1;
                    Hashtable ht = new Hashtable();
                    ht.Add("COD_MATERIAPRIMA", COD_MATERIAPRIMA);

                    List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                    lst = _consultas.ListaRegistroMateriaPrima(ht);

                    gvRegistro.DataSource = lst;
                    gvRegistro.DataBind();
                }
                catch (Exception ex)
                {
                    err_mens = "Error al cargar grilla:" + ex.Message;
                    muestraPnlMensaje(err_mens, 1);
                }
                finally
                {
                    muestraPnlMensaje(string.Empty, -1);
                }
            }

            private void GrabarMateriaPrima() 
            {
                Int32 iresultado = 0;
                string saccion = hdnaccion.Value;
                string COD_PERIODO = hdnperiodo.Value;
                string COD_EMPRESA = hdncodempresa.Value;
                decimal COD_MATERIAPRIMA = Convert.ToDecimal(hdncodregistro.Value);
                decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedValue);

                decimal CAN_VOLUMEN = Convert.ToDecimal(txtTM.Text);
                decimal VAL_VOLUMEN = Convert.ToDecimal(txtValor.Text);
                int COD_PUERTO = Convert.ToInt32(ddlPuerto.SelectedValue);
                string DESC_OBSERV = Convert.ToString(txtObservacion.Text);
                string USE_REG = UsuarioSistema.cod_Usuario ;
                string USE_MOD = USE_REG;
                try
                {
                    Hashtable ht = new Hashtable();
                    ht.Add("COD_MATERIAPRIMA", COD_MATERIAPRIMA);
                    ht.Add("COD_PERIODO", COD_PERIODO);
                    ht.Add("COD_EMPRESA", COD_EMPRESA);
                    ht.Add("COD_ESPECIE", COD_ESPECIE);
                    ht.Add("CAN_VOLUMEN", CAN_VOLUMEN);
                    ht.Add("VAL_VOLUMEN", VAL_VOLUMEN);
                    ht.Add("COD_PUERTO", COD_PUERTO);
                    ht.Add("DESC_OBSERV", DESC_OBSERV);
                    ht.Add("USE_REG", USE_REG);
                    ht.Add("USE_MOD", USE_MOD);

                    if (hdncodregistro.Value != "0" && saccion == "EDITAR")
                    {
                        iresultado = _consultas.ActualizaRegistroMateriaPrima(ht);
                    }
                    else
                    {
                        iresultado = _consultas.InsertaRegistroMateriaPrima(ht);
                    }
                }
                catch (Exception ex)
                {
                    err_mens = ex.Message;
                    iresultado = 99;
                }
                finally
                {
                    if (iresultado == 99)
                    {
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    }
                    else
                    {
                        limpiaFormulario();
                        cargaGrilla();
                    }
                }
            }
            private void cargaFormulario(domConsultasGenerales _be)
            {
                /*
                cod_materiaprima,codperiodo,codempresa,nombrecomercial,desespeci,codespecie,canvolumen,numvolumen,valvolumen,codpuerto,despuerto,desobservacion"
                 */
                txtValor.Text = _be.valvolumen.ToString();
                txtTM.Text = _be.canvolumen.ToString();
                txtObservacion.Text = _be.desobservacion;
                txtImportado.Text = string.Empty; //preguntar
                Utilidades.DropDownListSelectValue(ref ddlEspecie, _be.codespecie.ToString());
                Utilidades.DropDownListSelectValue(ref ddlPuerto, _be.codpuerto.ToString());

                hdnaccion.Value = "EDITAR";
                hdncodregistro.Value = _be.cod_materiaprima.ToString();


            }
            private void eliminaRegistro(domConsultasGenerales _be)
            {
                decimal COD_MATERIAPRIMA = _be.cod_materiaprima;
                Int32 iresultado = 0;
                try
                {
                    Hashtable ht = new Hashtable();
                    ht.Add("COD_MATERIAPRIMA", COD_MATERIAPRIMA);

                    iresultado = _consultas.EliminaRegistroMateriaPrima(ht);
                }
                catch (Exception ex)
                {
                    err_mens = ex.Message;
                    iresultado = 99;
                }
                finally
                {
                    if (iresultado == 99)
                    {
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    }
                    else
                    {
                        err_mens = "Se eliminó el registro correctamente";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                        limpiaFormulario();
                        cargaGrilla();
                    }
                }
            }
            private void muestraPnlMensaje(string _smens, Int32 _iopcion)
            {
                if (_iopcion == 1)
                {
                    pnlMensaje.Visible = true;
                    lblMensaje.Text = _smens;
                }
                else
                {
                    pnlMensaje.Visible = false;
                    lblMensaje.Text = string.Empty;
                }
            }

            private void solonumeros() 
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("<script type=\"text/javascript\">");
                sb.AppendLine("$(document).ready(function () {");
                sb.AppendLine("$('#<%=txtValor.ClientID %>').ForceNumericOnly();");
                sb.AppendLine("$('#<%=txtTM.ClientID %>').ForceNumericOnly();");
                sb.AppendLine("});");
                sb.AppendLine("</script>");
                this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "RegisterWidgetScript", sb.ToString());
            }
        #endregion


    }
}